ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Чек-лист самопроверки
- Что такое Swift и для каких платформ он предназначен?
- Кто разработал Swift и когда он был представлен?
- Как Swift связан с Objective-C и Cocoa?
- Поддерживает ли Swift кросскомпиляцию под Linux или Windows?
- Какие есть примитивные типы данных (
Int, Double, Bool, Character, String)?
- В чём разница между
let и var?
- Как работает вывод типа в Swift?
- Что такое опционалы (
Optional) и зачем они нужны?
- Как безопасно работать с опционалами (опциональная привязка,
guard let, if let)?
- Что делает оператор принудительного развёртывания (
!) и когда его стоит избегать?
- Что такое неявно развёрнутые опционалы (
Implicitly Unwrapped Optional)?
- Как объявляются и вызываются функции?
- Что такое параметры с метками и без?
- Как работают значения по умолчанию и вариадические параметры?
- Что такое кортежи (
(Int, String)) и где они применяются?
- Как работают замыкания и чем они отличаются от функций?
- Что такое трейлинговые замыкания?
- Как работают захваты значений в замыканиях (
capture list)?
- Что такое структуры (
struct) и чем они отличаются от классов?
- Что такое классы (
class) и какие особенности у них есть (наследование, deinit)?
- Поддерживает ли Swift множественное наследование?
- Что такое инициализаторы (
init) и какие виды бывают?
- Что такое фейловые инициализаторы (
init?)?
- Как работает деинициализатор (
deinit)?
- Что такое ARC и как он управляет памятью?
- Что такое сильные и слабые ссылки (
weak, unowned)?
- Как избежать retain cycle в замыканиях и делегатах?
- Что такое перечисления (
enum) и чем они мощнее аналогов в других языках?
- Как использовать ассоциированные значения в
enum?
- Что такое сопоставление с образцом (
switch) и почему оно должно быть исчерпывающим?
- Что такое протоколы (
protocol) и как они реализуются?
- Может ли протокол содержать реализацию? (через extension)
- Что такое расширения (
extension) и для чего они используются?
- Как добавить метод к существующему типу через расширение?
- Что такое обобщения (
generics) и как они записываются?
- Как ограничить обобщённые типы с помощью протоколов?
- Что такое
where-клаузулы в обобщениях?
- Как обрабатываются ошибки в Swift (
throw, try, catch, do)?
- Что такое протокол
Error и как создавать собственные ошибки?
- Что такое свойства: вычисляемые, наблюдаемые (
willSet, didSet)?
- Что такое ленивые свойства (
lazy)?
- Как работают методы типа (
static, class)?
- Что такое вложенные типы?
- Как организована система модулей в Swift?
- Что такое Swift Package Manager и как им пользоваться?
- Как писать unit-тесты (XCTest)?
- Что такое
@propertyWrapper и как он используется?
- Что такое
Codable и как сериализовать объекты в JSON?
- Как работает многопоточность в Swift (GCD,
async/await начиная с Swift 5.5)?
- Какие инструменты отладки и анализа доступны в Xcode (Instruments, Memory Graph Debugger)?